﻿<UserControl x:Class="WPFEntityFrameworkTest.UserControls.CategoryControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
             xmlns:ei="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions"
             mc:Ignorable="d" d:DesignHeight="668" d:DesignWidth="824"  >
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="1*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="0,5*" />
            <ColumnDefinition Width="20px"/>
            <ColumnDefinition Width="0,5*"/>
        </Grid.ColumnDefinitions>

        <!-- Achtung "IsSynchronizedWithCurrentItem" wird benötigt für die Verbindung mit der "ListCollectionView" -->
        <ListView Grid.Column="0" Grid.Row="0" x:Name="listView" Style="{StaticResource ListViewMenu}" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding CategoryViewModel.Categories, Mode=TwoWay}">
            <ListView.View>
                <GridView>
                    <GridView.Columns>
                        <GridViewColumn Header="">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <CheckBox Content="{Binding IsSelected}"></CheckBox>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>

                        <GridViewColumn Header="ID">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <Label Content="{Binding Id}"></Label>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        
                        <GridViewColumn Header="Name">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <Label Content="{Binding Name}"></Label>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        
                        <GridViewColumn Header="Beschreibung">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <Label Content="{Binding Description}"></Label>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        
                    </GridView.Columns>
                </GridView>
            </ListView.View>
            <!-- Der Style wird benötigt um ein Multiselect abzubilden, dazu muss in der Klasse aber auch ein Property existieren was IsSelected Heißt, dieses wird an den Style gebunden. -->
            <!--<ListView.ItemContainerStyle>
                <Style TargetType="{x:Type ListViewItem}">
                    <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
                </Style>
            </ListView.ItemContainerStyle>-->
            <!-- Wird benötigt um Events in MVVM darzustellen (Expression Blend wird benötigt!) Quelle: http://webenliven-space.de/dotnetblog/post/2010/07/27/Das-MVVM-und-Events.aspx -->
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="SelectionChanged">
                    <!-- Zugriff auf den Datacontext des aktuellen Controls und nicht der der im ListView gesetzt wurde, dann hier kann die Methode SelectionChangedMethod nicht gefunden werden -->
                    <ei:CallMethodAction MethodName="SelectionChangedMethod" TargetObject="{Binding Path=DataContext, RelativeSource={RelativeSource AncestorType=Control}}"/>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </ListView>

        <Grid Grid.Column="2" Grid.Row="0">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="100px"></ColumnDefinition>
                <ColumnDefinition Width="0,7*"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="50px"></RowDefinition>
                <RowDefinition Height="30px"></RowDefinition>
                <RowDefinition Height="30px"></RowDefinition>
                <RowDefinition Height="50px"></RowDefinition>
                <RowDefinition Height="50px"></RowDefinition>
                <RowDefinition Height="0,1*"></RowDefinition>
            </Grid.RowDefinitions>

            <Label Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2" Style="{StaticResource LabelHeader}" Content="Aktuell ausgewählte Kategorie"></Label>
            
            <Label Grid.Column="0" Grid.Row="1" Content="ID:"></Label>
            <Label Grid.Column="1" Grid.Row="1" Content="{Binding Path=CurrentCategory.Id}" Style="{StaticResource LabelMode}"></Label>
            
            <Label Grid.Column="0" Grid.Row="2" Content="Name:"></Label>
            <TextBox Grid.Column="1" Grid.Row="2" Text="{Binding Path=CurrentCategory.Name}" Style="{StaticResource TextBoxEditMode}"></TextBox>

            <Label Grid.Column="0" Grid.Row="3" Content="Beschreibung:"></Label>
            <TextBox Grid.Column="1" Grid.Row="3" Text="{Binding Path=CurrentCategory.Description}" Style="{StaticResource TextBoxEditModeMulti}"></TextBox>

            <StackPanel Grid.Column="1" Grid.Row="5" HorizontalAlignment="Stretch">
                <Button Content="Neue Kategorie erstellen" Style="{StaticResource ButtonMenu}" Command="{Binding CreateCategoryCommand}"/>
                <Button Content="Änderung speichern" Style="{StaticResource ButtonMenu}" Command="{Binding SaveCategoryCommand}"/>
                <Button Content=" Aktuelle Kategorie löschen" Style="{StaticResource ButtonMenu}" Command="{Binding DeleteCategoryCommand}"/>
            </StackPanel>
        </Grid>
    </Grid>
</UserControl>
